//1、引入模块
let express = require('express')
let bodyParser = require('body-parser')
let cross = require('./cross.js').cross
let tokenInterceptor = require('./token.js').tokenInterceptor
let userRouter = require('./userRouter.js')
let fs = require('fs')
//设置解析方式，不是json格式参数的解析方式
let urlencoded = bodyParser.urlencoded({ extend: false })
//2、创建服务对象
let app = express()
//3、指定程序运行的端口
let port = 3000
//设置模板位置
app.set('views', __dirname + '/ejs')
//设置模板类型
app.set('view engine', 'ejs')
//设置跨域
cross(app)
//处理静态资源
app.use(express.static('static'))
//拦截token在请求头中使用字段Authorization声明
//tokenInterceptor(app)

//5、请求index.html
app.get('/', (request, response) => {
  fs.readFileSync('./static/index.html', (err, data) => {
    response.send(data)
  })
})
//6、接收post请求
app.post('/login', urlencoded, userRouter.login)
//7、请求用户列表
app.post('/userList', urlencoded, userRouter.userList)
//8、请求的是ejs模板的首页
app.get('/index', (request, response) => {
  //通过ejs模板把js参数在index.ejs文件中渲染
  let arr= ['中国','俄国','英国','法国','美国']
  response.render('index', {
    title: 'index.ejs',
    user: {
      username:'admin'
    },
    arr
  })
})

//上面所有的路由都不匹配
app.all('/*', (request, response) => {
  //使用同步方法无法读取或返回响应数据
  fs.readFile('./static/404.html', (err, data) => {
    let object = {}
    console.log(err)
    if (err) {
      object.status = 500
      object.data = err
    } else {
      object.status = 404
      object.data = data.toString()
    }
    response.send(JSON.stringify(object))
  })
})

//4、启动服务监听程序
app.listen(port, () => {
  console.log(`Server is running on 3000`)
})



/*
* 1、创建项目
* 2、初始化项目npm init -y
* 3、安装express到本地依赖 npm i express --save
* 4、创建app.js文件，在文件中引入express文件
* 5、创建服务对象 let app = express()
* 6、启动服务 app.listen(port,()=>{})
* 7、监听请求，返回数据
*   app.get("/",(request,response)=>{response.send('内容')})
*/

/*
* 获得get和post的请求参数
* 1、使用第三方模块，body-parser
* 2、安装body-parser到本地项目 npm i body-parser --save
* 3、引入body-parser模块
* 4、设置body-parser解析请求参数的方式
* 5、使用body-parser解析方式
* */

/*
* express处理静态资源
* app.use(express.static('static'))
* http://127.0.0.1:3000/pic.jpg,默认到static文件夹中找pic.jpg，然后返回
* */